#include <iostream>

/*
    一个类如果只有纯虚函数，那么这个类就是一个抽象类，
    抽象类的子类一定要有这个纯虚函数的实现，如果不实现的话，那么子类也是一个抽象类了

*/

class TrafficTools
{
private:
    virtual void transport() = 0; // 纯虚函数，如果一个类中只有纯虚函数出现，那么这个类就是一个抽象类 abstract class
    // TrafficTools()
    // {
    //     std::cout << "TrafficTools 的构造函数调用了！~~~" << std::endl;
    // }
};

class Bus : public TrafficTools
{
public:
    void transport() override
    {
        std::cout << "公交车载人出行" << std::endl;
    }
    void normalFunction()
    {
    }
    // Bus()
    // {
    // }
};

int main(int argc, char const *argv[])
{
    /*
        cannot declare variable ‘bus’ to be of abstract type ‘Bus’
        object of abstract class type "Bus" is not allowed:

        bus.transport();
    */

    //    TrafficTools traffic{};

    Bus bus{};
    // bus.transport();
    return 0;
}
